package listbyorder.access001_100.test49;

import java.util.ArrayList;
import java.util.List;

/**
 * @author code_yc
 * @version 1.0
 * @date 2020/6/1 9:55
 */
public class Solution1 {

    // 方法一： 最暴力的解法(超时)
    // 1 创建一个布尔类型的等长数组
    // 2 遍历strs数组
    // 3 如果当前元素的布尔位为false，则创建一个新的list，加入当前的元素
    // 4 如果当前元素的布尔位为true，则直接跳过当前的元素
    public List<List<String>> groupAnagrams(String[] strs) {
        List<List<String>> res = new ArrayList<>();
        if (strs == null || strs.length == 0) return res;
        int len = strs.length;
        List<String> temp = null;
        boolean[] hasUse = new boolean[len];
        for (int i = 0; i < len; i++) {
            if (!hasUse[i]) {
                temp = new ArrayList<>();
                temp.add(strs[i]);
                hasUse[i] = true;
                for (int j = i + 1; j < len; j++) {
                    if (equal(strs[i], strs[j])) {
                        temp.add(strs[j]);
                        hasUse[j] = true;
                    }
                }
                res.add(temp);
            }
        }
        return res;
    }

    private boolean equal(String s1, String s2) {
        int[] helper = new int[26];
        for (int i = 0; i < s1.length(); i++) {
            helper[s1.charAt(i) - 'a']++;
        }
        for (int i = 0; i < s2.length(); i++) {
            helper[s2.charAt(i) - 'a']--;
        }
        for (int i = 0; i < helper.length; i++) {
            if (helper[i] != 0) {
                return false;
            }
        }
        return true;
    }
}
